/**
 * 将 JSON 字符串解析为 JavaScript 对象、数组，或者在输入为空时返回指定的空值。
 * @param json 要解析的 JSON 字符串。
 * @param def 输入为空时要返回的值。默认为空字符串。
 * @returns 解析后的 JavaScript 对象或数组，或者指定的空值。
 */
export function jsonParse<T>(json: unknown, def?: T): T | undefined {
  if (typeof json !== 'string') {
    return def;
  }

  const trimmed = json.trim();
  if (!trimmed) {
    return def;
  }

  try {
    const parsed = JSON.parse(json);
    return parsed as T;
  } catch {
    return def;
  }
}

export default jsonParse;
